const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database()
const _ = db.command

exports.main = async (event, context) => {
  const { OPENID } = cloud.getWXContext()
  const { action } = event
  
  console.log('🏗️ 施工队伍订单管理云函数调用:', { action, openid: OPENID })
  
  try {
    switch (action) {
      // 获取可接订单列表
      case 'getAvailableOrders':
        return await getAvailableOrders(OPENID, event)
      
      // 接单
      case 'acceptOrder':
        return await acceptOrder(OPENID, event)
      
      // 获取已接订单列表
      case 'getMyOrders':
        return await getMyOrders(OPENID, event)
      
      // 更新订单状态
      case 'updateOrderStatus':
        return await updateOrderStatus(OPENID, event)
      
      // 获取施工队伍信息
      case 'getTeamInfo':
        return await getTeamInfo(OPENID)
      
      // 拒绝订单
      case 'rejectOrder':
        return await rejectOrder(OPENID, event)
      
      // 获取订单详情
      case 'getOrderDetail':
        return await getOrderDetail(OPENID, event)
      
      default:
        return {
          success: false,
          error: '未知的操作类型: ' + action
        }
    }
  } catch (error) {
    console.error('❌ 施工队伍订单管理失败:', error)
    return {
      success: false,
      error: error.message || '操作失败'
    }
  }
}

// 获取施工队伍信息 - 修复版本
async function getTeamInfo(openid) {
  console.log('👥 获取施工队伍信息 (修复版本)', { openid })
  
  try {
    // 先查询施工队伍信息（不限制status）
    const teamResult = await db.collection('constructionTeams')
      .where({
        openid: openid
      })
      .get()
    
    console.log(`🔍 查询结果: 找到 ${teamResult.data.length} 条记录`)
    
    if (teamResult.data.length === 0) {
      console.log('❌ 未找到施工队伍记录')
      return {
        success: false,
        error: '您还没有注册施工队伍，请先完成注册'
      }
    }
    
    const team = teamResult.data[0]
    console.log('📋 施工队伍基本信息:', {
      _id: team._id,
      name: team.name,
      status: team.status,
      canReceiveOrders: team.canReceiveOrders,
      specialties: team.specialties
    })
    
    // 检查审核状态（支持多种可能的状态值）
    const approvedStatuses = [
      'approved',     // 英文
      'passed',       // 英文
      'active',       // 英文
      '通过',         // 中文
      '审核通过',     // 中文
      '已通过',       // 中文
      'accepted'      // 英文
    ]
    
    const isApproved = approvedStatuses.includes(team.status)
    console.log(`📊 审核状态检查: ${team.status} -> ${isApproved ? '✅ 通过' : '❌ 未通过'}`)
    
    if (!isApproved) {
      return {
        success: false,
        error: `您的施工队伍审核状态为"${team.status}"，尚未通过审核，请等待管理员审核`
      }
    }
    
    // 检查是否可以接单（如果字段存在的话）
    if (team.hasOwnProperty('canReceiveOrders') && team.canReceiveOrders === false) {
      return {
        success: false,
        error: '您的施工队伍暂时无法接单，请联系管理员'
      }
    }
    
    console.log(`✅ 权限验证通过: ${team.name}`)
    
    return {
      success: true,
      data: {
        ...team,
        canReceiveOrders: true
      }
    }
    
  } catch (error) {
    console.error('❌ 获取施工队伍信息失败:', error)
    return {
      success: false,
      error: `获取施工队伍信息失败: ${error.message}`
    }
  }
}

// 其他函数保持不变，这里只是修复了getTeamInfo
// 实际使用时需要将修复后的getTeamInfo函数替换到原文件中 